// 存储登录人信息

// 导入持久化方法
import * as auth from '@/utils/auth'
import { login, getUserInfo, getUserDetailById } from '@/api/user'
import { resetRouter } from '@/router'
// console.log('sss', auth)
export default {
  namespaced: true,
  // 定义变量（响应式）
  state: {
    token: auth.getToken() || null,
    // 登录人信息（昵称，头像，权限等）
    userTnfo: {}
  },
  // 2.修改变量（定义修改变量的方法）
  mutations: {
    setToken (state, payload) {
      // 内存村
      state.token = payload
      // 本地存
      auth.setToken(payload)
    },
    // 删除
    delToken (state) {
      state.token = null
      auth.removeToken()
    },
    // 存储登录人信息
    setInfo (state, userInfo) {
      state.userTnfo = userInfo
    },
    // 删除登录人信息
    delInfo (state) {
      state.userTnfo = {}
    }
  },
  // 定义后台请求的方法=》异步
  actions: {
    // 退出登录
    logout ({ commit }) {
      // token删除 和用户信息
      // commit 只能调用当前模块的mutations方法
      // commit != this.$store.commit()
      // commit('routes/setMenuList', [], { root: true }) === this.$store.commit('routes/setMenuList', [])
      commit('delToken')
      commit('delInfo')
      resetRouter()
      commit('routes/setMenuList', [], { root: true })
    },
    // 获取登录人信息
    async getUserInfo ({ commit }) {
      // 1. 发请求获取登陆人数居
      // 2.通过commit调用mutations方法储存
      const userInfo = await getUserInfo()
      // 依赖用户id，获取用户头像
      const photoInfo = await getUserDetailById(userInfo.userId)

      // console.log('登录人信息', userInfo, photoInfo)
      commit('setInfo', { ...userInfo, ...photoInfo })
      return userInfo.roles
    },
    async getTokenAction ({ commit }, formData) {
      const token = await login(formData)
      console.log('token', token)
      commit('setToken', token)
    }
  }
}
